Skip to content

Renovate から Dependabot へ移行し、CI を集約ワークフローにまとめる - #11

Merged
krrrr38 merged 1 commit into
mainfrom
migrate-renovate-to-dependabot
Aug 30, 2026
Merged

krrrr38 merged 1 commit into
mainfrom
migrate-renovate-to-dependabot

Conversation

@krrrr38

@krrrr38 krrrr38 commented Aug 30, 2026

Copy link
Copy Markdown
Member

概要

.github/renovate.json5 をやめて .github/dependabot.yml に移行する。あわせて auto merge のゲートとして機能させるため、各言語のテストを集約する ci.yml を追加する。

Dependabot

  • 言語 (ディレクトリ) ごとに update を分けているので PR も言語ごとに分かれる (java8 / java17 も別々)
  • 各言語内の minor/patch は groups で 1 言語 1 PR にまとめ、major は個別 PR
  • cooldown: default-days: 3 (リリースから 3 日経過したもののみ対象)
  • 週次 / 月曜 04:00 JST、open-pull-requests-limit: 5、既存ラベル (dependencies + 言語ラベル) を付与
  • 言語本体の major は ignore
    • composer: php
    • npm: typescript, @types/node
    • sbt: org.scala-lang:scala3-library_3, org.scala-lang:scala-library, org.scala-sbt:sbt

sbt は 2026-08 に Dependabot が対応したため (dependabot/dependabot-core#352)、scala も対象に含めている。Dependabot は build.sbt の scalaVersion を scala3-library として、project/build.properties の sbt.version を org.scala-sbt:sbt として依存に含めるため、いずれも major を ignore している。

auto merge

dependabot-auto-merge.yml を追加。dependabot/fetch-metadata で update-type を判定し、major 以外を gh pr merge --auto --squash する。major は人間がレビューする。

CI の集約

auto merge を「テストが通ったものだけ」に限定するには required status check が必要だが、既存の test-*.yml は paths フィルタ付きのため、そのまま required にすると起動しないチェックを待ち続けてしまう。そこで:

  • test-*.yml 8 本を on: workflow_call に変更 (ジョブ本体は無変更)
  • ci.yml が dorny/paths-filter で変更言語を検出し、該当する言語のみ呼び出す
  • all-checks ジョブが if: always() + 全ジョブへの needs で結果を集約し、success / skipped 以外があれば失敗する

required status check には All checks passed のみを登録すればよい。

あわせて、既存の paths に漏れていた golang/go.sum / typescript/package-lock.json / php/tests/** / python/tests/** を追加した。lock ファイルだけを更新する Dependabot PR でテストが走らない状態だったため。

マージ後に必要な設定

  1. Settings → General → Pull Requests → Allow auto-merge を有効化
  2. Settings → Rules → Rulesets で default branch 向けに
    • Require a pull request before merging (Required approvals は 0。1 以上だと Dependabot PR が承認されず auto merge が進まない)
    • Require status checks to pass → All checks passed

確認

  • actionlint / ghalint ともに pass

@krrrr38
krrrr38 force-pushed the migrate-renovate-to-dependabot branch from 7790c4e to 76aec21 Compare August 30, 2026 22:08
@github-actions github-actions Bot added the ci label Aug 30, 2026
- .github/renovate.json5 を削除し .github/dependabot.yml を追加
  - 言語 (ディレクトリ) ごとに update を分け、PR も言語ごとに分離
  - 各言語の minor/patch は groups で 1 言語 1 PR、major は個別 PR
  - cooldown 3 日、週次 (月曜 04:00 JST)、既存ラベルを付与
  - 言語本体の major は ignore (php, typescript, @types/node,
    scala3-library, scala-library, sbt)
- .github/workflows/dependabot-auto-merge.yml を追加
  - dependabot/fetch-metadata で判定し、major 以外を auto merge
- .github/workflows/ci.yml を追加し test-*.yml を workflow_call 化
  - 変更のあった言語だけを呼び出し、all-checks で status を集約
  - required status check には "All checks passed" のみを登録すればよい
  - paths の漏れ (go.sum, package-lock.json, php/tests, python/tests) を修正

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0163pSJYyqmQcJhji7qc69Nm
Signed-off-by: krrrr38 <k.kaizu38@gmail.com>
@krrrr38
krrrr38 force-pushed the migrate-renovate-to-dependabot branch from 76aec21 to 5a22c4b Compare August 30, 2026 22:09
@krrrr38
krrrr38 merged commit 5d376fc into main Aug 30, 2026
22 checks passed
@krrrr38
krrrr38 deleted the migrate-renovate-to-dependabot branch August 30, 2026 22:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant